
function fetch(url, option) {
  return useFetch(url,
    {
      /**
       * 配置 pick 可以配置返回数据的时候仅仅返回什么
       * 比如返回数据是:
       * {
       *   name: "",
       *   state: ""
       *   data: {...},
       * }
       * 如果配置了 pick: ['data'] 返回的数据就只会返回 data 了
       * 最佳实践: 通过异步请求回来的数据都会存储在页面 payload 中，意味着，可能会存在没有用在你的组件的数据也加载到了 payload 中，所以强烈推荐只选取必须使用在组件上的数据
       *  */
      // pick: ['data'],
      // baseURL: import.meta.env.VITE_API_BASE_URL
      // 合并参数
      ...option,
      onRequest({ request, options }) {
        const token = useUserInfo()?.token?.value
        // 设置请求头
        if (token) {
          options.headers = {
            token
          }
        }
      },
      onRequestError({ request, options, error }) {
        // 处理请求错误
      },
      onResponse({ request, response, options }) {
        // 处理响应数据可以在这里修改返回的数据
      },
      onResponseError({ request, response, options }) {
        // 处理响应错误
      }
    }
  )
}

// 自动导出
export default {
  get(url, params, option) {
    return fetch(url, { method: 'get', params, ...option })
  },

  post(url, body, option) {
    return fetch(url, { method: 'post', body, ...option })
  },

  put(url, body, option) {
    return fetch(url, { method: 'put', body, ...option })
  },

  delete(url, body, option) {
    return fetch(url, { method: 'delete', body, ...option })
  }
}

